minMatrix.js : perspective
構文 : matIV.perspective(fovy, aspect, near, far, dest)
引数 : fovy > 視野角
引数 : aspect > スクリーンのアスペクト比
引数 : near > ニアクリップ
引数 : far > ファークリップ
引数 : dest > 演算結果を格納する行列
プロジェクション変換行列を生成します。
尚、ここで生成されるのは一般的には 透視射影 と呼ばれる射影変換行列で、いわゆる遠近法の効果が現れます。 fovy には視野角を度数法で、
aspect にはスクリーンのアスペクト比(幅÷高さ)を、
near には前方クリップ位置(必ず 0 より大きな数値を指定)を、
far には後方クリップ位置(任意の数値)を指定します。
演算結果は dest に出力されます。
code:js
this.perspective = function(fovy, aspect, near, far, dest){
var t = near * Math.tan(fovy * Math.PI / 360);
var r = t * aspect;
var a = r * 2, b = t * 2, c = far - near;
dest10 = -(far + near) / c; dest14 = -(far * near * 2) / c; return dest;
};
dst の0,5,10,14
の要素以外が0
0,5,10は対角成分